

/// A page contains blocks of one specific size (`block_size`).
/// Each page has three list of free blocks:
/// `free` for blocks that can be allocated,
/// `local_free` for freed blocks that are not yet available to `mi_malloc`
/// `thread_free` for freed blocks by other threads
/// The `local_free` and `thread_free` lists are migrated to the `free` list
/// when it is exhausted. The separate `local_free` list is necessary to
/// implement a monotonic heartbeat. The `thread_free` list is needed for
/// avoiding atomic operations in the common case.
///
/// `used - |thread_free|` == actual blocks that are in use (alive)
/// `used - |thread_free| + |free| + |local_free| == capacity`
///
/// We don't count `freed` (as |free|) but use `used` to reduce
/// the number of memory accesses in the `mi_page_all_free` function(s).
pub struct Page {

}

